查看原文
其他

如鱼得水——当金融科技遇上容器技术

沈一帆 中国金融电脑+ 2022-12-13

验“金”室


无论你是一个软件开发工程师,还是测试工程师,亦或是运维工程师,在当今时代,你一定听说甚至使用过容器技术。互联网时代,应用程序的迭代周期越来越短,传统的基于程序包交付的方式在流转、部署时消耗的时长越来越难以满足应用程序快速上线的要求;同时,以“双11”、“秒杀”等需要峰值响应的业务场景越来越多,快速弹性伸缩成为服务器端技术急需解决的问题,就在这个时间节点,以docker为代表的新一代容器技术适时地登上了历史的舞台。



在金融科技迅速发展的大背景下,随着金融业务的进一步互联网化、金融业务接入渠道的多样化、业务数量的爆发性增加,传统环境和运维模式也难以支撑互联网金融业务突发高峰需求。


此时,当金融科技遇上容器技术,产生的化学反应也绝对不仅仅是1+1=2的效果。


一、容器技术的发展历程


实际上,容器技术并不是一个新概念,本质上它就是提供了一个以命名空间为基础的隔离环境,使得应用程序的一组进程能在其中隔离地运行。Linux内核中第一个容器进程管理器早在2008年就已经出现,就是大名鼎鼎的LXC(LinuX Containers)。LXC结合了cgroups和Linux的命名空间技术,为应用程序提供了一个独立的运行环境。


这里不得不提的就是Linux内核支持的命名空间(Namespace)技术和Cgroup技术。


Linux命名空间技术是通过修改进程的视图,为其创造出一个看似只属于它自己的边界。Namespace技术比Cgroup技术出现得更早,早在Unix的开发过程中,就引入了一个称为chroot系统调用的新特性。这个新系统调用的本质是允许将进程及其子进程的根目录更改为文件系统中的新位置。这是文件系统级别进程隔离的开始,即为每个进程隔离文件访问。而除了chroot这个文件系统的Namespace技术,Linux操作系统还提供了Pid、UTS、IPC、网络、用户等等的Namespace技术。


而Cgroup技术则注重于约束进程的资源使用,就是能够限制一个进程组能使用的资源上限,包括CPU、内存、磁盘等等,它的前身是谷歌的Process Containers项目。该项目旨在限制、计算和隔离进程的资源使用,例如CPU、内存、磁盘I/O和网络。2007年,Process Containers被重新命名为Control Groups或Cgroups,并最终合并到Linux内核v2.6.24中。


基于以上以LXC为代表Linux的容器技术,实际上已经实现了操作系统的进程隔离,成为了新一代容器技术的基础。但是在docker之前的容器技术仅解决了容器隔离的问题,却没有考虑打包的问题,直到docker容器的出现。2013年3月,Docker第一次发布,最初是作为一个开源平台发布的,名称是dotCloud。


实际上那时候的docker跟普通容器并没有太大不同,所以在它发布后不久,Cloud Foundry 的首席产品经理James Bayer就在社区里做了一次详细对比,告诉用户docker实际上只是一个同样使用Cgroups和Namespace实现的“沙盒”而已,没有什么特别。但是,出乎他的意料,docker项目迅速崛起,大受开发者们的好评。


事实上,docker 项目确实与普通容器在大部分功能和实现原理上都是一样的,但是仅仅一个小小的改变,让docker大放异彩,这个功能就是 docker镜像。普通容器虽然解决了进程隔离问题,但是对于不同的应用程序都要进行不同方式的打包,再在容器中运行起来,而打包的方式千差万别,常常因为环境不同而需要反复试错。而docker镜像,提供了将应用程序及其所运行环境统一打包的功能,大大节省了打包和在生产环境配置调试的时间。开发者完全不需要进行任何配置或者修改,docker镜像的存在保证了本地环境和云端环境的高度一致。


综上,docker容器LXC的基础上实现了进程隔离的能力,通过自身的镜像功能拥有了程序及运行环境统一打包的能力,从此,以docker为代表的容器技术开始在新一代虚拟化路线上占据着越来越重要的位置


二、容器技术的特点


容器技术具有快速部署能力、全平台兼容、高资源利用率及简单高效的管理等特点,如图1所示。


图1 容器技术特点


1. 更快速的交付和部署

容器在整个开发周期内都可以完美地辅助实现快速交付。Docker容器允许开发者在装有应用和服务的本地容器做开发,可以直接集成到可持续开发流程中。


比如开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。容器可以快速地被创建,快速迭代应用程序,并让整个过程全程可见,使团队中的其他开发者更容易理解应用程序是如何创建和工作的。比起虚拟机,容器十分的轻、快。容器的启动时间是秒级的,可大量地节约开发、测试、部署的时间。


2. 强大的兼容性:build once ,run anywhere

容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。这种兼容性可以让开发者把一个应用程序从一个平台直接迁移到另外一个平台而无需再进行适配。容器的兼容性和轻量特性可以很轻松地实现负载的动态管理。开发者可以快速扩容或方便地下线你的应用和服务,这种速度趋近实时。


3. 更高的资源利用率

容器对系统资源的利用率很高,一台物理主机上最高甚至可以同时运行成百上千容器。容器除了运行其中应用外,消耗的额外系统资源非常至少,使得应用能被分配到的资源比例很高,同时系统的开销尽量小。传统虚拟机方式运行10 个不同的应用就需先部署10个虚拟机,这其中hypervisor层的开销将会十分巨大;而10个容器只是10个被隔离限制的进程而已,并不消耗其他的系统资源。虚拟机与容器架构对比如图2所示。


图2 虚拟机与容器架构对比


4. 更简单的管理

利用容器引擎提供的镜像管理能力,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化且高效的管理。


三、容器技术在金融科技中的运用


随着金融行业业务模式的线上化,金融科技也正在深入拥抱新兴的互联网技术,比如人工智能、云计算、物联网等。而容器技术作为近年来最火热的云计算技术之一,与金融科技似乎有着与生俱来的适配性。


1. 峰值业务场景下的弹性伸缩

从2009年“双11”开始,秒杀、抢购等互联网时代的新业务模式不断涌现,金融行业除了配合互联网的新业务模式,自身也有很多峰值业务响应的场景,比如银行业的纪念币发售、股票市场中的新股申购等。而容器的快速横向扩缩容机制正好契合这一系列场景,于是在活动日前夕进行容器迅速扩容,在活动日过后减少容器数量也成了金融科技的的日常操作。


2. 灵活部署与快速交付

金融科技对应用程序快速交付、部署有着强烈的需求。一是随着金融行业业务需求越来越线上化,金融科技的需求迭代周期也越来越短;二是金融行业的信息系统一旦出现故障,可能造成难以估量的损失,所以修复的时间可谓是争分夺秒,而容器正是应对这一问题的绝佳技术。容器技术因容器镜像而拥有快速交付和灵活部署的能力,能够缩减应用程序交付和部署的周期,使一个应用程序从开发完成到生产运行经历的时间大大减少。


3. 高资源利用率

金融行业的系统结构近年来已开始从集中式的架构往分布式的架构进行转型,而为了支撑金融企业的海量业务,在分布式体系下,每一个金融企业往往都需要部署大批量的服务器进行支撑。而传统虚拟机的部署方式往往会消耗较多的系统资源,随着业务量的增长,这“一点点”的系统资源占用也慢慢聚沙成塔,给金融企业带来巨大的成本负担。而容器技术使得一台物理机上可以运行更多的应用程序,且不会带来如虚拟机般庞大的系统资源开销。


4. 安全容器技术

虽然docker容器有灵活部署、更高的资源利用率等特点,但是它也有自身的弊端。docker容器只是基于进程的隔离使得同一宿主机上的容器存在共享内核的情况,这就使得docker容器之间存在互相影响的隐患。而在金融行业,信息系统安全稳定地运行永远是排在第一位的,这当中,安全保障可谓是重中之重。故在满足性能容量需求的前提下,金融行业更偏向安全性更强的容器技术。而类似于kata这样的安全容器技术的出现也填补了这一场景的空白。安全容器技术使用容器镜像以超轻量级虚机的形式创建容器运行时,确保各个容器或容器pod能够在真正的隔离环境中运行,每一个容器都有独立的内核,且具备独立网络、I/O以及内存配额。目前,不少金融机构已开始安全容器技术的落地工作,以填补docker容器在安全上的弊端。


目前,容器技术已成为了金融科技转型中不可缺少的一环,在提升应用交付效率、提高资源利用率和峰值业务响应等方面起着至关重要的作用。在可见的未来,容器技术一定会在金融科技转型的过程中承担更加重要的职责。


往期推荐


遇事不决,量子力学?——你所不了解的量子计算机


1+1大于2?带你了解多模态的生物识别


浅谈超分辨率技术


挑战TensorFlow和PyTorch,“后浪”OneFlow胜算几何?


浅析分布式存储高可用机制



FCC30+

长按左边二维码

关注我们不迷路


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存